_Pragma("once");

#include "ExtendDevice.h"
#include "common.h"
#include "VideoPlayInfo.h"


/**
 *
 * @author lizb
 */
class MrVideoController : public ExtendDevice {
public:

    MrVideoController(DummyChannel& channel, const ExtendDeviceType& deviceType, const std::string& deviceActknowlege): ExtendDevice(channel, deviceType, deviceActknowlege){

    }


    bool configAndPlay(VideoPlayInfo& videoPlayInfo);
    /**
     * 根据节目序号调用节目
     *
     * @param serialNumber
     *   视频序号，三个字节，取值范围000~127
     */
    bool play(VideoPlayInfo& videoPlayInfo) ;

    /**
     * 速度调节
     *
     * @param serialNumber
     *  速度值，一个字节，范围1~8。
     */
       bool setSpeed(VideoPlayInfo& videoPlayInfo);

    /**
     * 亮度调节
     *
     * @param serialNumber
     *            三个字节，亮度范围000~255
     */
    bool setBright(VideoPlayInfo& videoPlayInfo);


    /**
     * 播放模式
     *
     * @param serialNumber
     *            模式，一个字节，取值范围0~4 模式：0-循环、1-单一、2-定时、3-同步、4-停止
     */
    bool setPlayMode(VideoPlayInfo& videoPlayInfo);


    /**
     * 查询节目数量
     *
     */
    std::string& getVideoCount(std::string& result);


    /**
     * 查询单个节目时长(按秒)
     *
     * @param serialNumber
     *            三个字节，视频范围000~127
     */
         int32_t getVideoDuration(VideoPlayInfo& videoPlayInfo);


    /**
     * 设置播放时间
     *
     * @param yyyy:
     * (年)四个字节，mo: (月)两个字节 dd：(日)两个字节
     * hh：(时)两个字节，mi：(分)两个字节，ss：(秒)两个字节 serialNumber 三个字节，视频范围000~127
     */
    bool setVideoTime(std::string& datetime, VideoPlayInfo& videoPlayInfo);

    /**
     * 查询系统时间
     *
     */
    std::string& retrieveControllerTime(std::string& result);


    VideoPlayInfo mvideoPlayInfo;
};
